//! gRPC服务器启动示例
//! 
//! 展示如何启动和使用gRPC沙箱管理服务器

use std::sync::Arc;
use anyhow::Result;
use koda_sandbox_manager::{Config, Manager};
use koda_sandbox_manager::grpc::GrpcServerRunner;

#[tokio::main]
async fn main() -> Result<()> {
    // 初始化配置
    let config = Config::default();
    
    // 创建管理器
    let manager = Manager::new(config).await?;
    
    // 启动管理器
    manager.start().await?;
    
    // 获取沙箱管理器引用
    let sandbox_manager = manager.sandbox_manager();
    
    // 设置gRPC服务器地址
    let addr = "127.0.0.1:50051".parse().unwrap();
    
    println!("🚀 启动gRPC沙箱管理服务器...");
    println!("监听地址: {}", addr);
    println!("服务就绪，等待客户端连接...");
    
    // 创建并启动gRPC服务器
    let grpc_runner = GrpcServerRunner::new(sandbox_manager, addr);
    grpc_runner.run_with_health_check().await?;
    
    // 优雅关闭
    manager.stop().await?;
    
    Ok(())
}